import AsyncStorage from '@react-native-async-storage/async-storage';

class StorageUtil {
    /**
     * 存储键值对
     * @param {string} key 
     * @param {any} value 
     */
    static async setItem(key, value) {
        try {
            const jsonValue = JSON.stringify(value);
            await AsyncStorage.setItem(key, jsonValue);
            return true;
        } catch (e) {
            console.error('Storage setItem error:', e);
            return false;
        }
    }

    /**
     * 获取存储的值
     * @param {string} key 
     * @returns {Promise<any>}
     */
    static async getItem(key) {
        try {
            const jsonValue = await AsyncStorage.getItem(key);
            return jsonValue != null ? JSON.parse(jsonValue) : null;
        } catch (e) {
            console.error('Storage getItem error:', e);
            return null;
        }
    }

    /**
     * 删除指定key的存储
     * @param {string} key 
     */
    static async removeItem(key) {
        try {
            await AsyncStorage.removeItem(key);
            return true;
        } catch (e) {
            console.error('Storage removeItem error:', e);
            return false;
        }
    }

    /**
     * 清除所有存储
     */
    static async clear() {
        try {
            await AsyncStorage.clear();
            return true;
        } catch (e) {
            console.error('Storage clear error:', e);
            return false;
        }
    }

    /**
     * 获取所有存储的键
     * @returns {Promise<string[]>}
     */
    static async getAllKeys() {
        try {
            return await AsyncStorage.getAllKeys();
        } catch (e) {
            console.error('Storage getAllKeys error:', e);
            return [];
        }
    }
}

export default StorageUtil;